package hot100;

public class findMin {
    public int findMin(int[] nums) {
        int n = nums.length;
        if(n == 1) {
            return nums[0];
        }
        //判断 nums[n-1] < nums[0]  if > 还是升序数组直接返回 nums[0]
        int l = 0;
        int r = n - 1;
        while(l < r){
            if(nums[n-1] < nums[0]) {//数组分为2部分,找到第一部分的末位+1 即为 最小值
                //以nums[n-1]为基准
                int mid = (l + r) / 2;
                if(nums[mid] > nums[n - 1]) {
                    l = mid + 1;
                } else {
                    r = mid;
                }

            }else {//升序数组直接返回 nums[0]
                return nums[0];
            }
        }
        return nums[r];

    }
}
